package xx.services.page.inter;

import javax.ws.rs.FormParam;
import javax.ws.rs.PathParam;

/**
 * page页面布局Item管理服务接口
 * 
 * @Path (Constants.RESTFUL_ROOT_PATH + "/page/layout/item")
 * @author chenxiang 2010-12-19
 * 
 */
public interface ILayoutItemInterface
{
    /**
     * 描述：获取一个布局列，包含ItemContent<br>
     * 
     * @GET
     * @Path ("/{item_id}")
     * @param itemId-@PathParam("item_id")
     *            布局列ID
     * @return 布局列实体，包含ItemContent
     * @author chenxiang
     */
    public String get(@PathParam("item_id")
    long itemId);

    /**
     * 获取一个布局列html代码，包含ItemContent的内容<br>
     * 
     * @GET
     * @Path ("/{item_id}/html")
     * @param itemId-@PathParam("item_id")
     *            布局列ID
     * @return 布局列Html代码，不是json数据
     * @author chenxiang
     */
    public String getHtml(@PathParam("item_id")
    long itemId);

    /**
     * 修改一个布局列demo。<br>
     * 
     * @PUT
     * @Path ("/{item_id}")
     * @param itemId-@PathParam("item_id")
     *            布局列ID
     * @param item-@FormParam("item")
     *            布局列demo的Json字符串
     * @param templet-@FormParam("templet")
     *            布局列demo的模板
     * @param demo-@FormParam("demo")
     *            布局列demo的demo
     * @return 新增的布局列实体
     * @author chenxiang
     */
    public String update(@PathParam("item_id")
    long itemId, @FormParam("item")
    String item, @FormParam("templet")
    String templet, @FormParam("demo")
    String demo);

    /**
     * 获取指定列id的所有内容
     * 
     * @GET
     * @Path ("/{item_id}/content")
     * @param itemId
     *            布局列ID
     * @return
     * @author dengjinye 2011-9-17
     */
    public String getContent(long itemId);

    /**
     * 添加布局列内容,如果添加类型type不是url或content，demo表示对应的demoId，还需要将demo对应的模板插入到page schema对应的表格中。
     * 例如demo是d_list中的list_id,则需要将list_id对应的模板插入到p_list中;
     * 
     * @POST
     * @Path("{item_id}/content/type/{type}/{demo_id}")
     * @param itemId
     *            布局列id
     * @param type
     *            内容类型： 1.list=列表 2.layout=布局 3.tab=标签 4.navigation=导航 5.view=视图 6.url=url地址
     *            7.content=直接写内容
     * @param demoId
     *            type类型对应的demoId，当type=content或者type=url的时候，demoId=0
     * @param title
     *            内容标题，如果是url或者content，此选项不起作用，将其置空即可。title=null
     * @param clazzId
     *            只有当type=list的时候才起作用
     * @param content
     *            内容信息，只有当type=content或者type=url的时候才起作用
     * @return
     * @author dengjinye 2011-9-22
     */
    public String addContent(long itemId, String type, long demoId, String title, long clazzId,
            String content);
}
